<?php
    namespace Core\ORM\Attributs;

    /**
     * Attribut Integer pour une Base de données
     *
     * @author mpetrini
     */
    class Integer extends \Core\ORM\Attributs\Attribut {
        /**
        * Constructeur complet
        * 
        * @param string $nom
        * @param boolean $primary (optional) (default=false)
        * 
        * @return void
        */
        public function __construct($nom, $primary=false, $taille=11, $autoIncrement=false) {
            parent::__construct($nom, $primary, $taille, $autoIncrement);
            $this->type='int';
        }
        
        /**
        * Retourne le type documenté pour phpDocumentor
        * 
        * @return string
        */
        public function getTypeDocumente() {
            return "int";
        }
        /**
        * Retourne le Setter de cet Attribut
        * 
        * @return string
        */
        public function creationSetter() {
            return  "\t\t/**\n".
                    "\t\t* Setter de l'attribut ".$this->getNomAttribut()."\n".
                    "\t\t*\n".
                    "\t\t* @return void\n".
                    "\t\t*/\n".
                    "\t\tpublic function set".\Utils\Outils::toCamelCase($this->getNomAttribut(), true)."(\$".$this->getNomAttribut().") {\n".
                    "\t\t\t\$this->".$this->getNomAttribut()."=intval(\$".$this->getNomAttribut().");\n".
                    "\t\t}\n";
        }
        /**
        * Crée la ligne de déclaration dans une reqûete de BDD
        * 
        * @return string
        */
        public function creationDeclarationCreateTable() {
            $attributs = $this->getAttributDeclarationCreateTable();
            return  $this->nom." ".strtoupper($this->type)."(".$this->taille.") ".$attributs["null"]." ".$attributs["defaut"]." ".
                    $attributs["autoIncrement"]." ".$attributs["commentaires"];
        }
    }
?>
